package dayPractice;

import java.util.Scanner;

/**
 *
 * 儿童节那天有 K 位小朋友到小明家做客。
 *
 * 小明拿出了珍藏的巧克力招待小朋友们。
 *
 * 小明一共有 N 块巧克力，其中第 i 块是 Hi×Wi 的方格组成的长方形。
 *
 * 为了公平起见，小明需要从这 N 块巧克力中切出 K 块巧克力分给小朋友们。
 *
 * 切出的巧克力需要满足：
 *
 * 形状是正方形，边长是整数
 * 大小相同
 * 例如一块 6×5 的巧克力可以切出 6 块 2×2 的巧克力或者 2 块 3×3 的巧克力。
 *
 * 当然小朋友们都希望得到的巧克力尽可能大，你能帮小明计算出最大的边长是多少么？
 * @author Summerday
 */
public class Main1227整数二分 {

    static int n, k, max;
    static int[][] nums;

    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        k = sc.nextInt();
        nums = new int[n][2];
        for(int i = 0; i < n; i ++){
            nums[i][0] = sc.nextInt();
            nums[i][1] = sc.nextInt();
            max = Math.max(max, Math.max(nums[i][0], nums[i][1]));
        }

        int l = 0, r = max;
        while(l < r){
            int mid =  l + r + 1 >>> 1;
            if(check(mid)) l = mid;
            else r = mid - 1;
        }
        System.out.println(l);
    }

    static boolean check(int mid){
        int res = 0;
        for(int[] num : nums){
            // 计算取mid时，目前是否已经符合要求
            res += (num[0] / mid) * (num[1] / mid);
            if(res >= k) return true;
        }
        return false;
    }
}
